home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / programming / basic / mildred / lha / fdsexample2.lha / FDsMildredExample2.asc next >
Text File  |  1999-01-05  |  3KB  |  97 lines

  1. ;Correct CludgeShape Mildred Library Example.
  2. ;
  3. ;Programmed by : Mikkel Loekke, aka. FlameDuck.
  4. ;
  5. ;Please read the README file.
  6. ;
  7.  
  8. WBStartup
  9. NoCli
  10.  
  11. DEFTYPE.l
  12.  
  13. MCPU Processor                      ; Tell Mildred which CPU it should use.
  14. Mc2pCPUmode Processor               ; Tell Mildred which CPU it should use for c2p.
  15.  
  16. MReserveBitmaps 1                   ; Tell Mildred that we're going to use 1 chunky bitmap.
  17. MReservec2pWindows 1                ; Tell it we only need one c2p display.
  18. MReserveShapes 1                   ; Tell Mildred that we need a shape aswell.
  19.  
  20. .initgraphics
  21. MBitmap 0,320,256                   ; This will contain our chunky buffer.
  22.  
  23. Fil$="RAM:TempBall"             ; Or wherever you have the chunky object lying arround.
  24.  
  25. *fetchady.l=AllocMem (FileSize(Fil$+".CNK")+16,$10000) ; Reserve enough memory to contain our entire ball object,
  26.                                                               ; and a 16 byte safety buffer. (Just in case.)
  27. If *fetchady                                                  ; if we succeed
  28.   *loadady.l=(*fetchady+16) AND $FFFFFFF0                     ; Calculate the 16 byte offset we need.
  29.   If BLoad(Fil$+".CNK",*loadady)                              ; And load our shape at THAT address.
  30.      MCludgeShape 0,32,32,*fetchady                         ; Now use the untruncated address to fetch the image.
  31.      MMakeCookie 0
  32.   Else
  33.     EZRequest "File not found: "+Fil$                         ; Nice error message
  34.     End
  35.   EndIf
  36. Else
  37.   EZRequest "Couldn't allocate enough memory !"               ; Another nice error message.
  38.   End
  39. EndIf
  40.  
  41. Dim bx.w(63),by.w(63),bxa.b(63),bya.b(63)
  42. For x.b=0 To 7
  43.   For y.b=0 To 7
  44.     bx(x+8*y)=32+32*x
  45.     by(x+8*y)=24+24*y
  46.   Next
  47. Next
  48.  
  49.  
  50.  
  51.  
  52. Mc2pWindow 0,320,256                ; Setup structures for c2p conversions.
  53.  
  54. *pbb.l=AllocMem(320*256,$10002)           ; Get some free CHIP memory.
  55. CludgeBitMap 0,320,256,8,*pbb    ; And make it a planar bitmap.
  56.  
  57. Dim scrtaglst.TagItem(7)            ; All this stuff sets up our
  58. scrtaglst(0)\ti_Tag = #SA_Left      ; Taglist for the screen we
  59. scrtaglst(0)\ti_Data = 0            ; want.
  60. scrtaglst(1)\ti_Tag = #SA_Depth
  61. scrtaglst(1)\ti_Data = 8
  62. scrtaglst(2)\ti_Tag = #SA_Width
  63. scrtaglst(2)\ti_Data = 320
  64. scrtaglst(3)\ti_Tag = #SA_Height
  65. scrtaglst(3)\ti_Data = 256
  66. scrtaglst(4)\ti_Tag = #SA_BitMap
  67. scrtaglst(4)\ti_Data = Addr BitMap (0)
  68. scrtaglst(5)\ti_Tag = #SA_ShowTitle
  69. scrtaglst(5)\ti_Data = 0
  70. scrtaglst(6)\ti_Tag = #SA_Draggable
  71. scrtaglst(6)\ti_Data = 0
  72. scrtaglst(7)\ti_Tag = #TAG_END      ; The most important tag of them all.
  73.  
  74. LoadPalette 0,Fil$+".PAL"           ; Load our palette info.
  75.  
  76. ScreenTags 0,"MildredDEMO",&scrtaglst(0) ; Open our intuition screen.
  77.  
  78. ShowPalette 0                       ; Attach our palette to the screen.
  79.  
  80.  
  81. Repeat                              ; Repeat our mainloop ....
  82.   Mc2p *pbb                         ; Convert our chunky buffer to
  83.                                     ; our planar bitmap.
  84.   MCls                              ; Clear our chunky buffer
  85.   For t = 0 To 63
  86.     MBlit 0,bx(t),by(t)
  87.     bx(t)+bxa(t)
  88.     by(t)+bya(t)
  89.     If bx(t) = 0 OR bx(t)=287 Then bxa(t)*-1
  90.     If by(t) = 0 OR by(t)=223 Then bya(t)*-1
  91.   Next
  92. Until RawStatus($45)                ; .... Until we press Escape.
  93.  
  94. End                                 ; End our nice program.
  95.  
  96.  
  97.